/***********************************************************************************
 * 文件名： hard_wire.h
 * 版本： 1
 * 说明：
 * 		MCU管脚与外部电路的连接关系声明，与管脚相关的一些申明。
 * 修改记录：
 * 	2021/04/28: 初版。 刘言。
 ***********************************************************************************/

#ifndef _HARD_WIRE_H_
#define _HARD_WIRE_H_

#include <sc.h>

// PB3 仅用内部下拉会导致误判短路，原因可能是模拟与数字IO切换，模拟时会断开下拉。
// 不使用尾充和咪头时要处理响应的IO口，不要浮空。
#define GPIO_INIT                                                  \
    {                                                              \
        /*默认输出电平*/                                     \
        PORTA = 0XFF; /*1111 1111*/                                \
        PORTB = 0XFE; /*1111 1110*/                                \
        /*方向，1:输入，0：输出*/                         \
        TRISA = 0XFE; /*1111 1110*/                                \
        TRISB = 0XF6; /*1111 0110*/                                \
        /*模拟引脚初始状态,1:模拟，0：数字(默认)*/ \
        /*ANSEL = 0X00;*/  /*0000 0000 CH7~0*/                     \
        /*ANSELH = 0X08;*/ /*0000 1000 CH15~8*/                    \
        /*上拉，1：开启，0：关闭(默认)*/               \
        WPUA = 0X00; /*0000 0000*/                                 \
        WPUB = 0X06; /*0000 0110*/                                 \
        /*下拉，1：开启，0：关闭（默认）*/           \
        WPDA = 0XDA; /*1101 1010*/                                 \
        WPDB = 0XF0; /*1111 0000*/                                 \
        /*电平变化中断，1：允许，0：禁止*/           \
        IOCA = 0X00; /*0000 0000*/                                 \
        IOCB = 0X02; /*0000 0010*/                                 \
    }

// 未使用的IO输出0
// #define GPIO_INIT   \
// {\
//     /*默认输出电平*/\
//     PORTA = 0X00;   /*0000 0000*/\
//     PORTB = 0X09;   /*0000 1001*/\
//     /*方向，1:输入，0：输出*/\
//     TRISA = 0X20;   /*0010 0000*/\
//     TRISB = 0X0C;   /*0000 1100*/\
//     /*模拟引脚初始状态,1:模拟，0：数字(默认)*/\
//     /*ANSEL = 0X00;*/   /*0000 0000 CH7~0*/\
//     /*ANSELH = 0X08;*/  /*0000 1000 CH15~8*/\
//     /*上拉，1：开启，0：关闭(默认)*/\
//     WPUA = 0X20;    /*0010 0000*/\
//     /*WPUB = 0X00;*/    /*0000 0000*/\
//     /*下拉，1：开启，0：关闭（默认）*/\
//     /*WPDA = 0X00;*/    /*0000 0000*/\
//     WPDB = 0X0C;    /*0000 1100*/\
//     /*电平变化中断，1：允许，0：禁止*/\
//     IOCA = 0X20;    /*0010 0000*/\
//     IOCB = 0X0C;    /*0000 1100*/\
// }

// LED
#define LED_S RB0
#define LED_S_ON LED_S = 1
#define LED_S_OFF LED_S = 0

// TOUCH VLOAD
#define VLOAD_INIT
#define VLOAD RA0
#define VLOAD_OUT_H VLOAD = 1
#define VLOAD_OUT_L VLOAD = 0

// TOUCH CH0
#define TCH0_PIN_IN RA5
#define TCH0_PIN_OUT_PP TRISA5 = 0
#define TCH0_PIN_OUT TCH0_PIN_IN
#define TCH0_PIN_IN_HZ TRISA5 = 1
#define TCH0_PIN_INT_EN() {IOCA5 = 1; PORTA; RAIF = 0;RAIE = 1;}
#define TCH0_PIN_INT_DIS() {IOCA5 = 0; RAIE = 0;}

// 通信IO
#define UART_IO RB1
#define UART_IO_INPUT_MODE TRISB1 = 1
#define UART_IO_OUTPUT_MODE TRISB1 = 0
#define UART_IO_NOT_TRI UART_IO == 1

#endif
